home *** CD-ROM | disk | FTP | other *** search
- /*
- * ListFonts - lists fonts on NeXT's
- * (c) by gfa <george@nice.usergroup.ethz.ch>
- * Sat Jan 11 23:37:32 GMT+0100 1992
- */
-
- #include <sys/types.h>
- #import <sys/dir.h>
- #include <stdio.h>
- #include <syslog.h>
- #include <strings.h>
-
- #define SIZE 18
- #define PAGECLIP 0, 0, 530, 840
- #define NUM_PATHS 2
- #define PAPER_LENGTH 600
-
- main(int argc, char **argv) {
-
- struct direct *dp;
- DIR *dirp;
- int a, b, n, i, k, j;
- char fontarray[2000][127], fontname[127],
- pathname[NUM_PATHS][1024] = { "/LocalLibrary/Fonts", "/NextLibrary/Fonts"};
-
- openlog("FontLister", LOG_PID, LOG_DAEMON);
-
- a = 0;
- for (b = 0; b < NUM_PATHS; b++) {
- dirp = opendir(pathname[b]);
- if (dirp == NULL) {
- syslog(LOG_ERR, "cannot open %s", pathname[b]);
- exit(1);
- }
- for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) {
- i = 0;
- while (dp->d_name[i] != '.' && dp->d_name[i] != '\0') {
- fontname[i] = dp->d_name[i];
- ++i;
- }
- fontname[i] = '\0';
- if (dp->d_name[i] == '.' && dp->d_name[i + 1] == 'f' && dp->d_name[i + 2] == 'o' &&
- dp->d_name[i + 3] == 'n' && dp->d_name[i + 4] == 't' && dp->d_name[i + 5] == '\0') {
- strcpy(fontarray[a], fontname);
- ++a;
- }
- }
- }
- qsort(&fontarray[0][0], a, 127, strcmp);
-
- printf("%%!PS-Adobe-2.0\n%%%%DocumentPaperSizes: A4\n");
- printf("%%%%Pages: (atend) 1\n%%EndComments\n");
- printf("%%%%Page: 1 1\n %d %d %d %d rectclip\n", PAGECLIP);
-
- j = 0; k = 2;
- for (n = 0; n < a; ++n) {
- printf("%d %d moveto\n", 3*SIZE, 760 - j*(SIZE + 4));
- printf("/Helvetica findfont %d scalefont setfont\n", SIZE/2);
- printf("(%d. %s) show\n", n+1, fontarray[n]);
- printf("%d %d moveto\n", 11*SIZE, 760 - j*(SIZE + 4));
- printf("/%s findfont %d scalefont setfont\n", fontarray[n], SIZE-4);
- printf("(The Quick Brown Fox Jumps Over The Lazy Dog) show\n");
- ++j;
- if (j == (PAPER_LENGTH/SIZE)) {
- j = 0;
- printf("showpage\n");
- printf("%%%%Page: %d %d\n %d %d %d %d rectclip\n", k, k, PAGECLIP);
- ++k;
- }
- }
- printf("showpage\n");
- printf("%%%%Trailer\n%%%%Pages: %d %d\n", k-1, 1);
- }
-